package com.reactim.message.service;

import com.reactim.message.dto.MessageResponse;
import reactor.core.publisher.Mono;

import java.util.List;

/**
 * 消息推送服务接口
 */
public interface MessagePushService {
    
    /**
     * 推送消息给指定用户
     */
    Mono<Void> pushToUser(Long userId, MessageResponse message);
    
    /**
     * 推送消息给群组所有成员
     */
    Mono<Void> pushToGroup(Long groupId, MessageResponse message, Long excludeUserId);
    
    /**
     * 批量推送消息
     */
    Mono<Void> pushToUsers(List<Long> userIds, MessageResponse message);
    
    /**
     * 检查用户是否在线
     */
    Mono<Boolean> isUserOnline(Long userId);
    
    /**
     * 获取用户的在线连接数
     */
    Mono<Integer> getUserConnectionCount(Long userId);
    
    /**
     * 发送离线消息通知
     */
    Mono<Void> sendOfflineNotification(Long userId, MessageResponse message);
}